package com.yn.xr.middleware.news.service;

import java.util.List;

import com.yn.core.service.BaseService;
import com.yn.xr.common.page.Page;
import com.yn.xr.news.mode.NewsInfo;

/**
 * 
 * @description:新闻中心操作service 
 * @fileName:NewsCenterService.java 
 * @createTime:2015年5月5日 下午3:40:10  
 * @author:wujun 
 * @version 1.0.0  
 *
 */
public interface NewsInfoService extends BaseService<NewsInfo, Integer>
{
    /**
     * 
     * @function:根据新闻ID查询新闻  
     * @param newsId
     * @return
     * @throws Exception NewsInfo   
     * @exception 
     * @author:wujun
     * @since  1.0.0
     */
    public NewsInfo queryNewsInfoById(Integer newsId) throws Exception;
    
    /**
     * 
     * @function:新闻分页查询  
     * @param newsInfo
     * @param pageNum
     * @param pageSize
     * @return
     * @throws Exception PageResult<NewsInfo>   
     * @exception 
     * @author:wujun   
     * @since  1.0.0
     */
    public Page<NewsInfo> queryNewsInfoPage(String hql, Object[] queryParams, int pageNum, int pageSize) throws Exception;
    
    
    /**
     * 
     * @function:新闻分页查询  (如果存在推荐且推荐时间在有效期内)
     * @param newsInfo
     * @param pageNum
     * @param pageSize
     * @return
     * @throws Exception PageResult<NewsInfo>   
     * @exception 
     * @author:李芳   
     * @since  1.0.0
     */
    public Page<NewsInfo> queryNewsInfoRecommendTimePage(NewsInfo newsInfo,int pageNum,int pageSize) throws Exception;
    
    /**
     * 获取下一条新闻信息
     * @param newsId 新闻id
     * @param type   新闻类型
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public NewsInfo queryNewsInfoNext(Integer newsId, Integer type, Integer platformId)throws Exception;
    
    /**
     * 获取上一条新闻信息
     * @param newsId 新闻id
     * @param type   新闻类型
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public NewsInfo queryNewsInfoPrev(Integer newsId, Integer type, Integer platformId)throws Exception;
    
    /**
     * 获取新闻的热度排行
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public List<NewsInfo> queryNewsInfoHeatRankList(Integer number, Integer platform, Integer type)throws Exception;
    
    /**
     * 更新浏览次数
     * @param newsId
     * @return
     * @see [类、类#方法、类#成员]
     * @param
     */
    public int updateBrowseNumber(NewsInfo newsInfo)throws Exception;
    
    public Page<NewsInfo> queryOtherNewsInfoPage(NewsInfo newsInfo, Integer pageNum, Integer pageSize,
        String newsId, String pageUpnewsId, String nextNewsId) throws Exception;
}
